Anticipatory scheduling

Anticipatory scheduling is an algorithm for scheduling hard disk input/output. It seeks to increase the efficiency of disk utilization by "anticipating" synchronous read operations.

"Deceptive idleness" is a situation where a process appears to be finished reading from the disk when it is actually processing data in preparation of the next read operation. This will cause a normal work-conserving I/O scheduler to switch to servicing I/O from an unrelated process. This situation is detrimental to the throughput of synchronous reads, as it degenerates into a seeking workload.[1] Anticipatory scheduling overcomes deceptive idleness by pausing for a short time (a few milliseconds) after a read operation in anticipation of another close-by read requests.[2]

Anticipatory scheduling yields significant improvements in disk utilization for some workloads.[3] In some situations the Apache web server may achieve up to 71% more throughput from using anticipatory scheduling.[4]

The Linux anticipatory scheduler may reduce performance on disks using TCQ, high performance disks, and hardware RAID arrays.[5] An anticipatory scheduler (AS) was the default Linux kernel scheduler between 2.6.0 and 2.6.18, by which time it was replaced by the CFQ scheduler.

As of kernel version 2.6.33, the Anticipatory scheduler (AS) has been removed from the Linux kernel[6]

See also

Other I/O schedulers

References

  1. ^ Iyer, Sitaram. The Effect of Deceptive Idleness on Disk Schedulers. http://scholarship.rice.edu/handle/1911/17433. Retrieved 2010-04-20. 
  2. ^ Morton, Andrew (2003-01-23). "2.5.59-mm5". linux-kernel, linux-mm mailing list. http://kerneltrap.org/node/567. Retrieved 2007-05-23. 
  3. ^ Morton, Andrew (2003-02-20). "IO scheduler benchmarking". linux-kernel mailing list. http://kerneltrap.org/node/592. Retrieved 2007-05-23. 
  4. ^ Iyer, Sitaram; Druschel, Peter (2001-06-06). "Anticipatory scheduling: A disk scheduling framework to overcome deceptive idleness in synchronous I/O". 18th ACM Symposium on Operating Systems Principles. http://portal.acm.org/citation.cfm?id=502046&dl=GUIDE&coll=GUIDE&CFID=87027259&CFTOKEN=77244280. Retrieved 2010-04-20. 
  5. ^ Piggin, Nick (2003-09-13). "as-iosched.txt". Linux kernel documentation. http://www.mjmwired.net/kernel/Documentation/block/as-iosched.txt. Retrieved 2010-04-20. 
  6. ^ "Linux 2 6 33 - Linux Kernel Newbies". http://kernelnewbies.org/Linux_2_6_33.